1.0x00002024 ~ 0xF0002023
2.0x0CE00000 ~ 0x0D200000
0x0CFFF000 ~ 0x0D001000
xxxxxxxxxx
251#a,b,c,d保存在寄存器t0,t1,t2,t3中
2#将-a*2-(b+c)-(d+b+c)+200转换为RV32I指令
3
4add t0,t0,t0
5sub t0,x0,t0#t0=-a*2
6add t1,t1,t2#t1=b+c
7add t3,t3,t1#t3=d+b+c
8sub t0,t0,t1#t0=-a*2-(b+c)
9sub t0,t0,t3#t0=-a*2-(b+c)-(d+b+c)
10addi t0,t0,200#t0=-a*2-(b+c)-(d+b+c)+200
11
12#将A[2*j] = B[i-8]转化为RV32I指令
13#A,B的基址分别保存在a0,a1中,i,j保存在t0,t1中
14
15#将A[2*j] = B[i-8]转化为RV32I指令
16#A,B的基址分别保存在a0,a1中,i,j保存在t0,t1中
17
18addi t0,t0,-8;#t0 = i-8
19add t1,t1,t1;#t1 = 2*j
20slli t0,t0,5;#t0 = (i-8)*32
21slli t1,t1,5;#t1 = 2*j*32
22add a0,a0,t1;#a0 = A[2*j]
23add a1,a1,t0;#a1 = B[i-8]
24lw t2,0(a1);#t2 = B[i-8]
25sw t2,0(a0);#A[2*j] = B[i-8]
1.0x00
2.0x88
xxxxxxxxxx
191la t0,place;#t0保存n的地址
2lw t1,0(t0);#t1保存n
3la t2,first;#t2保存第一项的地址
4la t3,second;#t3保存第二项的地址
5la t4,save;#t4保存第一项开始的地址
6sw t2,0(t4);#保存第一项
7addi t4,t4,4;#t4指向下一个位置
8sw t3,0(t4);#保存第二项
9addi t4,t4,4;#t4指向下一个位置
10addi t1,t1,-2;#n=n-2
11beqz t1,done;#如果n=0,则跳转到done
12loop:lw t2,-4(t4);#t2保存前一项
13lw t3,-8(t4);#t3保存前一项的前一项
14add t2,t2,t3;#t2=t2+t3
15sw t2,0(t4);#保存t2
16addi t4,t4,4;#t4指向下一个位置
17addi t1,t1,-1;#n=n-1
18bnez t1,loop;#如果n!=0,则跳转到loop
19done:li v0,10;#结束程序